/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.UsuarioDAO;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import model.Usuario;
import org.primefaces.component.idlemonitor.IdleMonitor;

/**
 *
 * @author Carlos Francisco de Moura
 */
public class LoginBean {

    // Atributo
    private String login;
    private String senha;
    private Usuario usuario;

    // Construtor padrão
    public LoginBean() {
    }

    /** Getters and Setters */
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    /** Fazer o Login no sistema */
    public String fazerLogin() throws Exception {
        usuario = UsuarioDAO.getLogin(login, senha);
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("currentUser", usuario);

        if (usuario != null) {
            info("Bem-Vindo " + usuario.getNome());
            return "home?faces-redirect=true";
        } else {
            erro("Dados inválidos.");
            return "login";
        }
    }

    /** Fazer o Logoff do sistema */
    public String fazerLogoff() {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        session.invalidate();
        erro("A sessão foi fechada.");
        return "loginPage";
    }

    /** monitorarSessao */
    public String monitorarSessao(IdleMonitor event) {
        return fazerLogoff();
    }

    /** Exibir mensagens no sistema */
    private static void exibirMsg(String summary, String detail, FacesMessage.Severity severity) {
        FacesMessage facesMessage = new FacesMessage(severity, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, facesMessage);
    }

    /** Preencher mensagem de informação */
    public static void info(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_INFO);
    }

    /** Preencher mensagem de erro */
    public static void erro(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_ERROR);
    }

    /** Preencher mensagem de alerta */
    public static void alerta(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_WARN);
    }
}
